package com.example.logic.chapter4.demo3;

/**
 * @Date 2023-05-02
 * @Author Jonathan
 * <p>
 * 基类定义了表示对外行为的方法action，并定义了可以被子类重写的两个步骤step1()和step2()，
 * 以及被子类查看的变量currentStep，子类通过重写protected方法step1()和step2()来修改对外的行为。
 * 这种思路和设计是一种设计模式，称之为模板方法。action方法就是一个模板方法，它定义了实现的模板，
 * 而具体实现则由子类提供。模板方法在很多框架中有广泛的应用，这是使用protected的一种常见场景。
 */
public class Base {
    protected int currentStep;

    protected void step1() {
    }

    protected void step2() {
    }

    public void action() {
        this.currentStep = 1;
        step1();
        this.currentStep = 2;
        step2();
    }
}